package com.pkk.cloud.support.oauth2.client.runner;

import com.pkk.cloud.support.oauth2.client.aspect.EnableOAuth2Aspect;
import com.pkk.cloud.support.oauth2.client.feign.EnableOAuth2ClientFeign;
import com.pkk.cloud.support.oauth2.client.runner.configuration.ClientConfiguration;
import com.pkk.cloud.support.oauth2.princiapl.EnableOAuth2Principal;
import com.pkk.cloud.support.oauth2.security.access.EnableSecurityAccess;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import org.springframework.context.annotation.Import;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableOAuth2Client;
import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer;

/**
 * @author peikunkun<br>
 * @version V1.0<br>
 * @Title: 客户端请求权限接口验证等配置<br>
 * @Description: <><br>
 * @date 2020/3/21 0021 下午 3:48<br>
 * @URL:[]
 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
//此注解优先于普通的路径之前,在/oauth/tokan之后的路径归他管
@EnableResourceServer
//在使用Spring安全性并希望使用
//*从一个或多个OAuth2授权服务器授予授权代码。要利用此功能，您需要*委托给名为的bean的{@link DelegatingFilterProxy}应用程序中的全局servlet筛选器“oauth2ClientContextFilter”。一旦过滤器就位，您的客户端应用程序就可以使用创建{@link oauth2restemplate}的注释（一个{@link AccessTokenRequest}），例如。
@EnableOAuth2Client
//feign的在oauth2中的配置
@EnableOAuth2ClientFeign
//鉴权接口忽略配置的属性与鉴权的忽略的配置
@EnableSecurityAccess
//自定义的tokan主题信息的提取操作
@EnableOAuth2Principal
//接口之间的鉴权的配置
@EnableOAuth2Aspect
@Import(ClientConfiguration.class)
public @interface EnableClientOAuth2 {
}
